library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
method from
print.tbl_lazy
print.tbl_sql
── Attaching packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6 ✔ purrr 0.3.4
✔ tibble 3.1.7 ✔ dplyr 1.0.9
✔ tidyr 1.2.0 ✔ stringr 1.4.0
✔ readr 2.1.2 ✔ forcats 0.5.1
── Conflicts ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
library(janitor)
Attaching package: ‘janitor’
The following objects are masked from ‘package:stats’:
chisq.test, fisher.test
library(CodeClanData)
Attaching package: ‘CodeClanData’
The following object is masked from ‘package:dplyr’:
starwars
The following object is masked from ‘package:tidyr’:
population
library(fmsb)
whisky <- CodeClanData::whisky %>% clean_names()
whisky %>%
distinct(distillery)
whisky %>%
distinct(region)
whisky %>%
distinct(owner)
whisky %>%
distinct(floral)
whisky <- whisky %>%
mutate(across(body:floral, as.numeric))
whisky <- whisky %>%
pivot_longer(cols = body:floral,
names_to = "notes",
values_to = "score")
whisky %>%
filter(distillery == "Aberfeldy") %>%
ggplot(aes(x = notes,
y = score,
fill = region)) +
geom_col() +
scale_y_continuous(expand = c(0, 0)) +
scale_y_continuous(limits = c(0, 4)) +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1, size = 14),
axis.text.y = element_text(size = 14),
axis.title.x = element_text(size = 20),
axis.title.y = element_text(size = 20),
legend.title = element_text(size = 20),
legend.text = element_text(size = 14)) +
labs(x = "Notes",
y = "\nScore",
fill = "Whisky Region")
Scale for 'y' is already present. Adding another scale for 'y', which will replace the existing scale.

all_regions <- unique(whisky$region)
all_distilleries <- unique(whisky$distillery)
p <- whisky %>%
group_by(owner) %>%
mutate(count = n()/12) %>%
ungroup() %>%
filter(count > 1) %>%
filter(year_found > 1810 & year_found < 1840) %>%
ggplot(aes(x = year_found,
y = capacity,
colour = owner)) +
geom_point(aes(shape = region)) +
theme(axis.text.x = element_text(size = 8),
axis.text.y = element_text(size = 8),
axis.title.x = element_text(size = 8),
axis.title.y = element_text(size = 8),
legend.title = element_text(size = 8),
legend.text = element_text(size = 8),
plot.title = element_text(size = 8)) +
scale_y_continuous(labels = scales::comma) +
labs(x = "Year Founded",
y = "Capacity",
colour = "Distillery Owner",
title = "Distillery Capacity by Year Founed\n")
plotly::ggplotly(p)
whisky %>%
group_by(year_found) %>%
summarise(count = n()) %>%
arrange(desc(count))
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGphbml0b3IpCmxpYnJhcnkoQ29kZUNsYW5EYXRhKQpsaWJyYXJ5KGZtc2IpCmBgYAoKYGBge3J9CndoaXNreSA8LSBDb2RlQ2xhbkRhdGE6OndoaXNreSAlPiUgY2xlYW5fbmFtZXMoKQpgYGAKCmBgYHtyfQp3aGlza3kgJT4lIAogIGRpc3RpbmN0KGRpc3RpbGxlcnkpCgp3aGlza3kgJT4lIAogIGRpc3RpbmN0KHJlZ2lvbikKCndoaXNreSAlPiUgCiAgZGlzdGluY3Qob3duZXIpCgp3aGlza3kgJT4lIAogIGRpc3RpbmN0KGZsb3JhbCkKYGBgCgoKYGBge3J9CndoaXNreSA8LSB3aGlza3kgJT4lIAogIG11dGF0ZShhY3Jvc3MoYm9keTpmbG9yYWwsIGFzLm51bWVyaWMpKQpgYGAKCgoKYGBge3J9CndoaXNreSA8LSB3aGlza3kgJT4lIAogIHBpdm90X2xvbmdlcihjb2xzID0gYm9keTpmbG9yYWwsCiAgICAgICAgICAgICAgIG5hbWVzX3RvID0gIm5vdGVzIiwKICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gInNjb3JlIikKYGBgCgoKCmBgYHtyfQp3aGlza3kgJT4lCiAgZmlsdGVyKGRpc3RpbGxlcnkgPT0gIkFiZXJmZWxkeSIpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBub3RlcywKICAgICAgICAgICAgIHkgPSBzY29yZSwKICAgICAgICAgICAgIGZpbGwgPSByZWdpb24pKSArCiAgZ2VvbV9jb2woKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGV4cGFuZCA9IGMoMCwgMCkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLCA0KSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIHZqdXN0ID0gMSwgaGp1c3Q9MSwgc2l6ZSA9IDE0KSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTQpLAogICAgICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGxlZ2VuZC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMjApLAogICAgICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNCkpICsKICBsYWJzKHggPSAiTm90ZXMiLAogICAgICAgeSA9ICJcblNjb3JlIiwKICAgICAgIGZpbGwgPSAiV2hpc2t5IFJlZ2lvbiIpCmBgYAoKCmBgYHtyfQphbGxfcmVnaW9ucyA8LSB1bmlxdWUod2hpc2t5JHJlZ2lvbikKCmFsbF9kaXN0aWxsZXJpZXMgPC0gdW5pcXVlKHdoaXNreSRkaXN0aWxsZXJ5KQpgYGAKCgoKCgpgYGB7cn0KcCA8LSB3aGlza3kgJT4lCiAgZ3JvdXBfYnkob3duZXIpICU+JSAKICBtdXRhdGUoY291bnQgPSBuKCkvMTIpICU+JSAKICB1bmdyb3VwKCkgJT4lIAogIGZpbHRlcihjb3VudCA+IDEpICU+JQogIGZpbHRlcih5ZWFyX2ZvdW5kID4gMTgxMCAmIHllYXJfZm91bmQgPCAxODQwKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0geWVhcl9mb3VuZCwKICAgICAgICAgICAgIHkgPSBjYXBhY2l0eSwKICAgICAgICAgICAgIGNvbG91ciA9IG93bmVyKSkgKwogIGdlb21fcG9pbnQoYWVzKHNoYXBlID0gcmVnaW9uKSkgKwogICAgICAgIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4KSwKICAgICAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBheGlzLnRpdGxlLnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpLAogICAgICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gOCksCiAgICAgICAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDgpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IHNjYWxlczo6Y29tbWEpICsKICAgICAgbGFicyh4ID0gIlllYXIgRm91bmRlZCIsCiAgICAgICAgICAgeSA9ICJDYXBhY2l0eSIsCiAgICAgICAgICAgY29sb3VyID0gIkRpc3RpbGxlcnkgT3duZXIiLAogICAgICAgICAgIHRpdGxlID0gIkRpc3RpbGxlcnkgQ2FwYWNpdHkgYnkgWWVhciBGb3VuZWRcbiIpCgpwbG90bHk6OmdncGxvdGx5KHApCmBgYAoKYGBge3J9CndoaXNreSAlPiUgCiAgZ3JvdXBfYnkoeWVhcl9mb3VuZCkgJT4lIAogIHN1bW1hcmlzZShjb3VudCA9IG4oKSkgJT4lIAogIGFycmFuZ2UoZGVzYyhjb3VudCkpCmBgYAoK